package com.leo.leetcode.s100;

/**
 *
 * @author xuexiaolei
 * @version 2017年11月20日
 */
public class T09PalindromeNumber {
    /**
     * 每次除10组成x的末尾反转序列，然后看是否和x的前序列相等
     * @param x
     * @return
     */
    public static boolean isPalindrome(int x) {
        if(x<0 || (x>9 && x%10==0)) return false;
        int res = 0;
        while (x>res){
            res = res*10+x%10;
            x=x/10;
        }
        if (x==res || res/10==x) return true;
        return false;
    }

    /**
     * 先获取x的长度，然后算出头和尾比较
     * @param x
     * @return
     */
    public static boolean isPalindrome2(int x) {
        if(x<0 || (x>9 && x%10==0)) return false;
        int h=1;
        while (x/h > 10)  h*=10;
        while (x>0){
            if(x/h!=x%10){
                return false;
            }
            x=x%h;
            x=x/10;
            h=h/100;
        }
        return true;
    }

    public static void main(String[] args) {
//        System.out.println(isPalindrome(-1));
//        System.out.println(isPalindrome(0));
//        System.out.println(isPalindrome(10));
//        System.out.println(isPalindrome(11));
//        System.out.println(isPalindrome(101));
//        System.out.println(isPalindrome(Integer.MAX_VALUE));
//        System.out.println(isPalindrome(Integer.MIN_VALUE));

        System.out.println(isPalindrome2(-1));
        System.out.println(isPalindrome2(0));
        System.out.println(isPalindrome2(10));
        System.out.println(isPalindrome2(11));
        System.out.println(isPalindrome2(101));
        System.out.println(isPalindrome2(1111));
        System.out.println(isPalindrome2(11111));
        System.out.println(isPalindrome2(Integer.MAX_VALUE));
        System.out.println(isPalindrome2(Integer.MIN_VALUE));
    }
}
